package 力扣._518_零钱兑换2;

public class Solution {
    public int change(int amount, int[] coins) {
        //装满背包有多少种方式，零钱无限-》完全背包，多少种方式——》组合数——》先物品再遍历背包
        //dp[j]：装满容量为j的背包有dp[j]种方式
        //dp[j] += dp[j - coins[i]]
        int[] dp = new int[amount + 1];
        dp[0] = 1;
        for (int coin : coins) {    //组合数先物品再容量
            for (int j = coin; j <= amount; j++) {    //完全背包由左向右遍历
                dp[j] += dp[j - coin];
            }
        }
        return dp[amount];
    }
}
